﻿using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using ThridGroup.ERP.DTO.ProductionSystemDto.ProductionMaterialDto;
using Volo.Abp.Application.Services;

namespace ThridGroup.ERP.ProductionSystem
{
    /// <summary>
    /// 生产领料服务接口层   ---tsh
    /// </summary>
    public interface IProductionMaterialServices : IApplicationService
    {
        /// <summary>
        /// 获取生产领料列表
        /// </summary>
        /// <param name="input">查询参数</param>
        /// <returns>生产领料列表</returns>
        Task<object> GetListAsync(GetProductionMaterialDto input);

        /// <summary>
        /// 根据ID获取生产领料详情
        /// </summary>
        /// <param name="id">生产领料ID</param>
        /// <returns>生产领料详情</returns>
        Task<object> GetAsync(int id);

        /// <summary>
        /// 创建生产领料
        /// </summary>
        /// <param name="input">创建参数</param>
        /// <returns>创建结果</returns>
        Task<object> CreateAsync(CreateProductionMaterialDto input);

        /// <summary>
        /// 更新生产领料
        /// </summary>
        /// <param name="id">生产领料ID</param>
        /// <param name="input">更新参数</param>
        /// <returns>更新结果</returns>
        Task<object> UpdateAsync(int id, UpdateProductionMaterialDto input);

        /// <summary>
        /// 删除生产领料
        /// </summary>
        /// <param name="id">生产领料ID</param>
        /// <returns>删除结果</returns>
        Task<object> DeleteAsync(int id);

        /// <summary>
        /// 生成领料单编号
        /// </summary>
        /// <returns>领料单编号</returns>
        Task<string> GenerateIssuanceOrderCodeAsync();
    }
}
